TCP Reset Attack الهجوم بلغة البايثون

TCP Reset Attack جميل حسين طويلة

هذا الهجوم يتم من خلال خلق و إرسال حزمة بيانات واحدة مزورة spoofed TCP segment لخداع هدفين متصلين باستخدام TCP لقطع الاتصال القائم بينهما

كان لهذا الهجوم عواقب في العالم الحقيقي وتسبب بالخوف من اجراء تغييرات على البرتوكول TCP ويعتقد أن هذا الهجوم هو عنصر رئيسي في جدار الحماية الصيني العظيم الذي تستخدمه الحكومة الصينية لفرض رقابة على الانترنت داخل الصين  بالرغم من أهمية هذا الهجوم ولكنه لا يتطلب فهم عميق للشبكات أو لآلية عمل البرتوكول TCP

في هذا المقال سنتعرف على اساسيات البرتوكول TCP وسنتعرف على آلية عمل الهجوم TCP Reset Attack وسنقوم بتنفيذ هذا الهجوم بطريقتين:

  • الأولى من خلال خلق حزمة بيانات باستخدام أداة hping3
  • الثانية من خلال كتابة كود بايثون لينفذ هذه المهمة

كيف يتم هجوم TCP Reset Attack:

يقوم المهاجم بقطع الاتصال بين جهازي ضحية من خلال إرسال رسالة مزورة لاحدهما أو كلاهما ومحتوى هذه الرسالة هو طلب قطع الاتصال بشكل مباشر وهذه الرسالة هي TCP reset segment

في الحالات الطبيعية ترسل هذه الرسالة عندما يتلقى الجهاز حركة بيانات غير متوقعة ويريد من مرسلها التوقف عن عملية الارسال وهذا الهجوم يتم من خلال استغلال هذه الآلية لخداع الضحايا لإغلاق اتصال TCP بعد تلقي حزمة بيانات مزورة fake reset segment وإذا تم ضبط القيم الخاصة بهذه الحزمة بشكل صحيح من قبل المهاجم فإن الجهاز الضحية سيدرك أن هذه البيانات هي صحيحة وسيقوم بقطع الاتصال ومنعه من تبادل المزيد من المعلومات، يمكن للضحايا إنشاء اتصال TCP جديد كمحاولة لاستئناف الاتصال السابق ولكن يمكن للمهاجم أيضاً قطع هذه الاتصال مرة أخرى ولكون هذا الهجوم يتطلب من المهاجم إعداد وخلق الحزمة المزورة فهذا الهجوم يكون فعال فقط ضد عمليات الاتصال الطويلة لأن الاتصالات القصيرة ستكون قد انتهت في الوقت الذي يحاول فيه المهاجم خلق الحزمة المزورة

إرسال حزمة مزورة spoofed TCP segment هو أمر سهل جداً كون آلية عمل كل من البرتوكول TCP والبرتوكول IP لا يتم من خلالهم التحقق من هوية المستخدم (يوجد إضافة لبرتوكول IP تؤمن عملية المصادقة تسمى IPSec سنتعرف عليها في مقال قادم ولكنها غير مستخدمة على نطاق واسع) من المفترض أن يرفض مزود خدمة الانترنت نقل حزم البيانات التي تدعي أنها جاءت من عنوان IP منتحل ولكن هذا التحقق غير مطبق بشكل كامل

كل ما يمكن للمستقبل القيام به هو أخذ عنوان IP ورقم البورت للمصدر من داخل حزمة البيانات ومحاولة التحقق من هوية المرسل من خلال برتوكولات الطبقات الأعلى ولكون TCP reset هي جزء من البرتوكول TCP نفسه فلا يمكن التحقق من صحتها باستخدام هذه البرتوكولات

على الرغم من سهولة هذا الهجوم ولكن من الأفضل أن نقوم أولاً بفهم آلية عمل البرتوكول TCP

TCP Protocol:

Transmission Control Protocol

البرتوكول المسؤول عن عملية الاتصال ويعمل في الطبقة الرابعة Transport Layer وعملية الاتصال تبدأ من خلال المصافحة الثلاثية Three-way Handshake ويتم التأكد من وصول البيانات المرسلة لذلك يتم استخدامه في التطبيقات التي تقوم بإرسال بيانات مهمة مثل: HTTP and FTP

TCP يعرف باسم برتوكول الاتصال الموجه Connection Oriented وهو يقوم بتأسيس الاتصال ومن ثم يتأكد من وصول حزم البيانات المرسلة إلى المستقبل.

عملية الاتصال تبدأ بإرسال SYN Packet والتي هي بداية لعملية المصافحة الثلاثية والتي تخبر المستقبل بأن المرسل يريد تأسيس اتصال TCP، المستقبل يرد بإرسال SYN-ACK  كإعلام على أنه استلم طلب SYN وعندما تصل الإجابة SYN-ACK إلى المرسل يقوم بإرسال ACK كإعلام على أنه تلقى الإجابة وعندها تبدأ عملية الاتصال عبر برتوكول TCP

الشكل التالي يظهر عملية المصافحة الثلاثية:

TCP three-way handshake

حزم TCP Packet ترقم بشكل تسلسلي ويجب أن تفهم آلية الترقيم لاستخدامها في مثل هذا النوع من الهجمات أو هجمات سرقة الجلسة Session Hijacking وهجمات رجل في المنتصف MITM – Man in the Middle

رسالة TCP تسمى Segment وتتألف من البيانات المرسلة والترويسة Header

الشكل التالي يظهر مكونات TCP Header:

  • Source Port and Destination Port:

لها طول 16 bits وتحوي على رقم المنفذ الذي تم إرسال البيانات عبره ورقم المنفذ الذي سيتم استقبال البيانات من خلاله.

  • Sequence Number (32 bits):

تحوي على الرقم التسلسلي لأول Byte من البيانات في Segment ويستخدم لتحديد المكان أو الترتيب الصحيح لحزم البيانات.

  • Acknowledgment Number (32 bits):

تحوي على الرقم التسلسلي الخاص بالمرسل (تم زيادته بمقدار واحد)

  • H.Len (4 bits):

حجم الترويسة

  • Rsvd:

محجوزة لاستخدام مستقبلي.

  • Control Bits (Control Flags):

 تحوي على احدى الأعلام التالية:

  • SYN: للدلالة على المزامنة وله رقم تسلسلي ويستخدم لبدء عملية الاتصال.
  • ACK: للدلالة على استلام الطلب.
  • RST: قطع الاتصال بشكل فوري.
  • FIN: للإشارة لانتهاء البيانات المرسلة وبالتالي انهاء عملية الاتصال.
  • PSH: للإشارة إلى ضرورة إرسال البيانات الموجودة في الذاكرة المؤقتة.
  • URG: للإشارة إلى أن البيانات المرسلة هي بيانات مستعجلة والمؤشر Urgent Pointer يحوي على الرقم التسلسلي لهذه البيانات.

بيئة الاختبار:

بيئة الاختبار مكونة من ثلاث أجهزة ضمن نفس الشبكة

  1. جهاز المهاجم: يعمل بنظام التشغيل كالي لينكس
  2. جهاز الضحية الأول: يعمل بنظام لينكس (metasploitable2)  وله عنوان IP: 192.168.17.129
  3. جهاز الضحية الثاني: يعمل بنظام Ubuntu وله العنوان IP: 192.168.17.135

سيناريو الهجوم:

سنقوم بعملية اتصال telnet من خلال نظام Ubuntu IP:192.168.17.135   مع النظام metasploitable2 IP: 192.168.17.129 ومن ثم سنقوم بقطع هذا الاتصال من خلال ارسال حزمة بيانات مزورة Spoofed TCP Reset من قبل النظام كالي لينكس

بعد نجاح عملية الاتصال لنقم بفتح wireshark في جهاز الهجوم (الكالي) ونقم بفلترة حزم البيانات باستخدام خيار الفلترة التالي:

ip.dst== 192.168.17.129 && ip.src==192.168.17.135

والذي سيقوم بعرض حركة البيانات من المصدر 192.168.17.135 إلى الوجهة 192.168.17.129 فقط

HPING3:

هذه الأداة تسمح لنا بإرسال حزم بيانات عبر الشبكة وتسمح لنا بخلق الحزم المرسلة وتخصيصيها بحسب الغاية المطلوبة، لنقم بخلق حزمة بيانات مزورة من خلال التعليمة التالية:

  • 192.168.17.129: عنوان الجهاز الذي سيتم ارسال حزمة البيانات له
  • a 192.168.17.138: عنوان IP المنتحل spoofed IP – حزمة البيانات سيكون لها هذا العنوان كعنوان المصدر
  • p 23: رقم البورت في الوجهة
  • s 44914: رقم البورت في المصدر
  • R: لخلق Reset Flag
  • M 3979056369: رقم sequence number
  • c 1: لإرسال حزمة بيانات واحدة

هذه القيم تم الحصول عليها من خلال wireshark

الآن وبعد إرسال هذه الحزمة سيتم قطع اتصال telnet بين الأجهزة الهدف

الهجوم بلغة البايثون:

لنقم بكتابة كود بايثون لتنفيذ هذا الهجوم

في البداية لنقم باستيراد scapy إن لم تكن منصبة لديك مسبقاً يمكنك تنصيبها باستخدام التعليمة التالية على نظام كالي لينكس

ومن ثم قمنا بتحديد عناوين IP لكل من المصدر (عنوان منتحل) والوجهة وقمنا بتحديد رقم البورت في كل من المصدر والهدف وقمنا بتحديد رقم sequence number

(هذه القيم حصلنا عليها من خلال تحليل حركة البيانات ضمن wireshark)

الآن وعند تنفيذ هذا الكود سيتم خلق حزمة بيانات مزورة لها flag reset مع عناوين IP للمصدر والهدف هي عناوين الأجهزة الهدف وسيتم إرسال هذه الحزمة وسيتم قطع الاتصال بين الأجهزة الهدف

لا تقم باستهداف أي شبكة لا تملكها أو لا تملك صلاحية يٌسمح لك من خلالها القيام بذلك، لا تقم بأي عمل غير قانوني أو غير اخلاقي

Related posts

Leave a Comment